The Internet of Things (IoT) is often used to refer to a network of physical objects, or “Things,” embedded with sensors and electronics that provide network connectivity, enabling the objects to collect and exchange data. These objects can take a variety of forms with widely varying hardware configurations and capabilities. For example, a modern smartphone might be equipped with sensors that enable the capture of physical location, device orientation, light conditions, magnetic fields, acceleration, humidity, and atmospheric pressure. The smartphone may further include the processing power to interpret data from these sensors and communication capabilities compatible with Wi-Fi, cellular, Bluetooth, and Near Field Communication (NFC) technologies. In contrast, an IoT-enabled thermostat might be limited to a temperature sensor and be capable of communicating temperature readings and settings using ZigBee technology.
In order to provide more personalized experiences to users in an IoT world, it would be useful to understand the environment in which IoT devices operate. However, due to the limited capabilities and variable configurations of IoT devices, a challenge arises in understanding the environments of different devices in a consistent way. For example, many approaches to understanding the environment of a device rely upon the device having GPS hardware. While most modern smartphones satisfy this criteria, many IoT devices do not, which can limit the understanding of their environments.